resource "aws_lb_target_group_attachment"
GPT-4.icon
つまり、ターゲットグループと具体的な転送先(EC2 など)を接続するために使うリソースです。
✅ ざっくりイメージ
code:text
└ Listener
└ Target Group
├ Target Group Attachment → EC2 インスタンス A
└ Target Group Attachment → EC2 インスタンス B
🎯 主な用途
ターゲットグループへの EC2 インスタンスの登録
ターゲットグループへの IP アドレスの登録
ターゲットグループへの Lambda の紐付け(※これは別リソースで実施)
※ 特に Auto Scaling Group を使わない構成で明示的にターゲットを登録したいときに利用されます。
🔍 基本構造
code:hcl(rb)
resource "aws_lb_target_group_attachment" "example" {
target_group_arn = aws_lb_target_group.example.arn
target_id = aws_instance.example.id
port = 80
}
🎯 主なパラメータ
table:_
パラメータ 説明
target_group_arn 紐付けるターゲットグループの ARN
target_id 登録する EC2 インスタンス ID または IP アドレス
port 転送先のリスンポート(ターゲットサーバの待ち受けポート)
🔧 ターゲットタイプ別 target_id の指定方法
table:_
ターゲットタイプ target_id の指定例
instance EC2 のインスタンス ID
ip プライベート IP アドレス
code:hcl
# EC2 インスタンスを登録
target_id = aws_instance.web.id
# IP アドレスを登録
target_id = "10.0.1.5"
🔁 Auto Scaling Group を使う場合
基本的には ASG にターゲットグループを渡すだけで自動的に登録される ため、
aws_lb_target_group_attachment は不要です。
code:hcl(rb)
resource "aws_autoscaling_group" "example" {
...
}
✅ まとめ:ASG ならターゲットグループ自動登録、ASG を使わない場合は手動で aws_lb_target_group_attachment を使う。
🔥 複数インスタンスを登録する例
code:hcl(rb)
resource "aws_lb_target_group_attachment" "example" {
for_each = toset([
aws_instance.web1.id,
aws_instance.web2.id
])
target_group_arn = aws_lb_target_group.example.arn
target_id = each.value
port = 80
}
→ 複数台の EC2 をまとめてアタッチすることも可能。